package persistencia;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import util.Conexion;
import bean.TipoInformacion;

public class TipoInformacionDAO {

	public List<TipoInformacion> listar() throws SQLException{
		List<TipoInformacion> listado = new ArrayList<TipoInformacion>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT nombre_tipo,descripcion_tipo,situacion,id,funcion " +
				"FROM tbl_TipoInformacion");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			TipoInformacion tipoInformacion = new TipoInformacion();
			tipoInformacion.setId(rs.getInt("id"));
			tipoInformacion.setNombre_tipo(rs.getString("nombre_tipo"));
			tipoInformacion.setDescripcion_tipo(rs.getString("descripcion_tipo"));
			tipoInformacion.setSituacion(rs.getString("situacion"));
			tipoInformacion.setFuncion(rs.getString("funcion"));
			listado.add(tipoInformacion);
		}
		rs.close();
		pstm.close();
		return listado;
	}
		
	public List<TipoInformacion> buscarPorNombre(String filtro,String situacion) throws SQLException{
		List<TipoInformacion> listado = new ArrayList<TipoInformacion>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT nombre_tipo,descripcion_tipo,situacion,id,funcion " +
				"FROM tbl_TipoInformacion WHERE situacion in ("+situacion+") and nombre_tipo like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			TipoInformacion tipoInformacion = new TipoInformacion();
			tipoInformacion.setId(rs.getInt("id"));
			tipoInformacion.setNombre_tipo(rs.getString("nombre_tipo"));
			tipoInformacion.setDescripcion_tipo(rs.getString("descripcion_tipo"));
			tipoInformacion.setSituacion(rs.getString("situacion"));
			tipoInformacion.setFuncion(rs.getString("funcion"));
			listado.add(tipoInformacion);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public List<TipoInformacion> buscarPorDescripcion(String filtro,String situacion) throws SQLException{
		List<TipoInformacion> listado = new ArrayList<TipoInformacion>();
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT nombre_tipo,descripcion_tipo,situacion,id,funcion " +
				"FROM tbl_TipoInformacion WHERE situacion in ("+situacion+") and descripcion_tipo like ?");
		pstm.setString(1, filtro + "%");
		ResultSet rs = pstm.executeQuery();
		while(rs.next()){
			TipoInformacion tipoInformacion = new TipoInformacion();
			tipoInformacion.setId(rs.getInt("id"));
			tipoInformacion.setNombre_tipo(rs.getString("nombre_tipo"));
			tipoInformacion.setDescripcion_tipo(rs.getString("descripcion_tipo"));
			tipoInformacion.setSituacion(rs.getString("situacion"));
			tipoInformacion.setFuncion(rs.getString("funcion"));
			listado.add(tipoInformacion);
		}
		rs.close();
		pstm.close();
		return listado;
	}
	
	public int insertar(TipoInformacion tipoInformacion) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"insert into tbl_TipoInformacion (nombre_tipo,descripcion_tipo,situacion,funcion,usuario_creacion,fecha_creacion) values (?,?,?,?,?,?)");
		pstm.setString(1, tipoInformacion.getNombre_tipo());
		pstm.setString(2, tipoInformacion.getDescripcion_tipo());
		pstm.setString(3, tipoInformacion.getSituacion());
		pstm.setString(4, tipoInformacion.getFuncion());
		pstm.setString(5, tipoInformacion.getUsuario_creacion());
		pstm.setInt(6, tipoInformacion.getFecha_creacion());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
	
	public int actualizar(TipoInformacion tipoInformacion) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
		"update tbl_TipoInformacion set nombre_tipo = ?,descripcion_tipo = ?,situacion = ?,usuario_modificacion = ?,fecha_modificacion = ? where id = ?");
		pstm.setString(1, tipoInformacion.getNombre_tipo());
		pstm.setString(2, tipoInformacion.getDescripcion_tipo());
		pstm.setString(3, tipoInformacion.getSituacion());
		pstm.setString(4, tipoInformacion.getUsuario_modificacion());
		pstm.setInt(5, tipoInformacion.getFecha_modificacion());
		pstm.setInt(6, tipoInformacion.getId());
		int resultado = pstm.executeUpdate();
		pstm.close();
		return resultado;
	}
	
	
	public TipoInformacion buscarTipo(TipoInformacion tipo) throws SQLException{
		PreparedStatement pstm = Conexion.obtenerConexionMSQL().prepareStatement(
				"SELECT nombre_tipo,descripcion_tipo,situacion,id,funcion " +
						"FROM tbl_TipoInformacion WHERE nombre_tipo = ?");
		pstm.setString(1, tipo.getNombre_tipo());	
		ResultSet rs = pstm.executeQuery();
		TipoInformacion tipo1 = null;
		while (rs.next()) {
			tipo1 = new TipoInformacion();
			tipo1.setNombre_tipo(rs.getString("nombre_tipo"));
			tipo1.setId(rs.getInt("id"));
		}
		rs.close();
		pstm.close();
		return tipo1;
		
		
	}
	
	
}
